home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mac-Source 1994 July
/
Mac-Source_July_1994.iso
/
Updates, etc.
/
PG PRO⁄PG Lite Demos
/
PG PRO Demo
/
PG PRO Demo.rsrc
/
TEXT_3005_QuickTime.FLTR.txt
< prev
next >
Wrap
Text File
|
1993-09-10
|
8KB
|
258 lines
'=============================================================================
'= Copyright 1992 Staz‚Ñ¢ Software, Inc. =
'= All rights reserved =
'= "QuickTime.FLTR" from PG:PRO =
'=============================================================================
INCLUDE FILE _aplIncl
COMPILE 0,_MacsbugLabels_strResource_caseInsensitive'set by PG:PRO
GLOBALS "PG PRO.GLBL"'include PG stuff
END GLOBALS'end of our globals
INCLUDE "@Header.INCL"
GOTO"QT Filter"
DIM RECORD movieRecord
DIM moovFSVRefNum'movie file vol ref num
DIM moovFSParID&'movie file parent ID
DIM 63 moovFSName$'movie file name
DIM moovResRef'movie resource file reference
DIM moovResID'movie resource ID
DIM moovMovie&'movie reference number
DIM moovController&'movie controller ref
DIM moovT,moovL,moovB,moovR'movie rect
DIM END RECORD.movieRecSz
'
'============================================================================
CLEAR LOCAL
LOCAL FN QTErrors(theErr,bool)
'==========================================================================
DIM 60 pTxt$(1)
SELECT theErr
CASE 1'no "Movie" window
pTxt$(0) = "You must create a window named "+CHR$(34)+"Movie"+CHR$(34)+"."
pTxt$(1) = "QT 1"
CASE 2'QT not available
pTxt$(0) = "QuickTime is not available on this machine."
pTxt$(1) = "QT 2"
CASE 3'couldn't init QT
pTxt$(0) = "I could not initialize QuickTime."
pTxt$(1) = "QT 3"
CASE 4'QT call failed
pTxt$(0) = "One of the QT calls in this filter ended in an error."
pTxt$(1) = "QT 4"
CASE 5'memory error
pTxt$(0) = "I was not able to obtain enough memory for this operation."
pTxt$(1) = "QT 5"
CASE 6'file resolution error
pTxt$(0) = "I was not able to open that movie using the path"
pTxt$(0) = pTxt$(0) + "information provided."
pTxt$(1) = "QT 6"
END SELECT
CALL PARAMTEXT(pTxt$(0),pTxt$(1),"","")
FN pGshowErr(0)
IF bool THEN STOP
% LINE"QTFlag",0
END FN
'============================================================================
LOCAL FN QTRemoveRes(resHndl&)
'==========================================================================
OSErr = FN HNOPURGE(resHndl&)
homeRes = FN HOMERESFILE(resHndl&)
curRes = FN CURRESFILE
CALL USERESFILE(homeRes)
CALL RMVERESOURCE(resHndl&)
DEF DISPOSEH(resHndl&)
CALL USERESFILE(curRes)
END FN
'============================================================================
LOCAL FN QTKillVars
'==========================================================================
DO'look for old var resources
resHndl& = FN GETINDRESOURCE(_"Moo!",1)'get a handle to one
IF resHndl& THEN FN QTRemoveRes(resHndl&)'valid handle?
UNTIL resHndl& = 0'till there are no more
END FN
'============================================================================
LOCAL FN QTInit
'==========================================================================
GOTO"After Flag"
"QTFlag"
MACHLG -1
"After Flag"
DIM 60 pTxt$(3)
FN QTKillVars
resHndl& = FN GETNAMEDRESOURCE(_"pG3w","Movie")
IF resHndl& = 0 THEN FN QTErrors(1,_false)
QTVers = FN GESTALT(_"qtim")
LONG IF SYSERROR
FN QTErrors(2,_false)
XELSE
IF FN ENTERMOVIES THEN FN QTErrors(3,_zTrue)
END IF
END FN
'============================================================================
CLEAR LOCAL
LOCAL FN QTGetParID(fName$,fVRefNum)
'==========================================================================
pBlk& = @paramBlock$'pBlock for file spec
& pBlk& + _ioNamePtr ,@fName$'file name to pBlock
% pBlk& + _ioVRefNum ,fVRefNum'vol ref num to pBlock
% pBlk& + _ioFDirIndex,0'flag pBlk to use name & vRef
OSErr = FN GETCATINFO(pBlk&)'get info on movie file
END FN = [pBlk& + _ioFLParID]'parent ID is what we needed
'============================================================================
LOCAL FN QTEvents
'==========================================================================
DIM fsVRefNum,fsParID&,63 fsName$,resRef,resID,movie&,controller&
DIM mT,mL,mB,mR
movieCount = FN COUNTRESOURCES(_"Moo!")
LONG IF movieCount
FOR thisMovie = 1 TO movieCount
resHndl& = FN GETINDRESOURCE(_"Moo!",thisMovie)
LONG IF resHndl&
BLOCKMOVE [resHndl&],@fsVRefNum,_movieRecSz
X = USR MCISPLAYEREVENT(controller&,EVENT)
END IF
NEXT
END IF
END FN
'============================================================================
LOCAL FN QTNulls
'==========================================================================
DIM fsVRefNum,fsParID&,63 fsName$,resRef,resID,movie&,controller&
DIM mT,mL,mB,mR
movieCount = FN COUNTRESOURCES(_"Moo!")
LONG IF movieCount
FOR thisMovie = 1 TO movieCount
resHndl& = FN GETINDRESOURCE(_"Moo!",thisMovie)
LONG IF resHndl&
BLOCKMOVE [resHndl&],@fsVRefNum,_movieRecSz
LONG IF FN ISMOVIEDONE(movie&) = _false
CALL MOVIESTASK(movie&,100)
END IF
END IF
NEXT
END IF
FN QTEvents
END FN
'============================================================================
LOCAL FN QTUpdate
'==========================================================================
DIM fsVRefNum,fsParID&,63 fsName$,resRef,resID,movie&,controller&
DIM mT,mL,mB,mR
resHndl& = FN GETRESOURCE(_"Moo!",gOutputWnd)
LONG IF resHndl&
BLOCKMOVE [resHndl&],@fsVRefNum,_movieRecSz
OSErr = FN UPDATEMOVIE(movie&)'tell QT to update
END IF
END FN
'============================================================================
CLEAR LOCAL
LOCAL FN QTopen
'==========================================================================
DIM fsVRefNum,fsParID&,63 fsName$,resRef,resID,movie&,controller&
DIM mT,mL,mB,mR
LONG IF gFileType& = _"MooV"
fsName$ = gFileName$
fsVRefNum = gFileVol
fsParID& = FN QTGetParID(fsName$,fsVRefNum)
LONG IF FN OPENMOVIEFILE(fsVRefNum,resRef,_fsRdPerm)
FN QTErrors(4,_false)
XELSE
LONG IF FN NEWMOVIEFROMFILE(movie&,resRef,resID,resName$,1,dataRefChg)
FN QTErrors(4,_false)
XELSE
CALL GETMOVIEBOX(movie&,mT)
CALL OFFSETRECT(mT,-mL,-mT)
CALL SETMOVIEBOX(movie&,mT)
resHndl& = FN GETNAMEDRESOURCE(_"pG3w","Movie")
LONG IF resHndl&
OSErr = FN HNOPURGE(resHndl&)
CALL GETRESINFO(resHndl&,ID,tp&,t$)
mB = mB + 16
r = {[resHndl&]+_left} + mR
b = {[resHndl&]+_top } + mB
% [resHndl&]+_bottom,b
% [resHndl&]+_right ,r
FN pGreplaceRes(resHndl&,_"pG3w",ID,"")
FN pGbuild(-ID)
ID = WINDOW(_outputwnd)
CALL SETWTITLE(WINDOW(_wndpointer),fsName$)
wPtr& = WINDOW(_wndpointer)
CALL SETMOVIEGWORLD(movie&,wPtr&,0)
controller& = FN NEWMOVIECONTROLLER(movie&,mT,0)
rslt = USR MCNEWATTACHEDCONTROLLER(controller&,movie&,wPtr&,mT)
resHndl& = FN NEWHANDLE (_movieRecSz)
LONG IF resHndl&
BLOCKMOVE @fsVRefNum,[resHndl&],_movieRecSz
FN pGreplaceRes(resHndl&,_"Moo!",ID,fsName$)
CALL UPDATERESFILE(gResRef)
resHndl& = FN GETRESOURCE(_"Moo!",ID)
IF resHndl& THEN OSErr = FN HNOPURGE(resHndl&)
XELSE
FN QTErrors(5,_zTrue)
END IF
XELSE
FN QTErrors(1,_false)
END IF
END IF
END IF
END IF
END FN
'============================================================================
LOCAL FN QTClose(theWindow)
'==========================================================================
DIM fsVRefNum,fsParID&,63 fsName$,resRef,resID,movie&,controller&
DIM mT,mL,mB,mR
resHndl& = FN GETRESOURCE(_"Moo!",theWindow)
LONG IF resHndl&
BLOCKMOVE [resHndl&],@fsVRefNum,_movieRecSz
CALL STOPMOVIE(movie&)
CALL DISPOSEMOVIECONTROLLER(controller&)
OSErr = FN CLOSEMOVIEFILE(resRef)
CALL DISPOSEMOVIE(movie&)
FN QTRemoveRes(resHndl&)
END IF
END FN
'============================================================================
LOCAL FN QTShutDown
'==========================================================================
DO
resHndl& = FN GETINDRESOURCE(_"Moo!",1)
LONG IF resHndl&
CALL GETRESINFO(resHndl&,theWindow,tp&,t$)
FN QTClose(theWindow)
FN pGclose(theWindow)
END IF
UNTIL resHndl& = 0
CALL EXITMOVIES
END FN
'============================================================================
"QT Filter"
LONG IF {LINE"QTFlag"}
SELECT gAction
CASE _mainAction
SELECT gSubAction
CASE _mainStart :FN QTInit
CASE _mainOpen :FN QTopen
CASE _mainShutDown :FN QTShutDown
END SELECT
CASE _windowAction
SELECT gSubAction
CASE _windowClose :FN QTClose(gWhichWindow)
CASE _windowUpdate :FN QTUpdate
END SELECT
CASE _otherAction
SELECT gSubAction
CASE _otherFilterEvent :FN QTEvents
CASE _otherNullEvent :FN QTNulls
END SELECT
END SELECT
END IF
'============================================================================